package cc.decat.escript.ir;

import cc.decat.escript.ir.expression.*;
import cc.decat.escript.ir.statement.*;

public interface Visitor {
    void visit(ChunkNode chunkNode);
    void visit(VariableExpression variableExpression);
    void visit(LiteralExpression literalExpression);
    void visit(AssignStatement assignStatement);
    void visit(StatementList statementList);
    void visit(BlockStatement blockStatement);
    void visit(BinaryExpression binaryExpression);
    void visit(CallFunctionStatement callFunctionStatement);
    void visit(FunctionDeclarationStatement functionDeclarationStatement);
    void visit(IfStatement ifStatement);
    void visit(CallFunctionExpression callFunctionExpression);
    void visit(ReturnStatement returnStatement);
    void visit(AnonymousFunctionExpression anonymousFunctionExpression);
    void visit(ForStatement forStatement);
    void visit(ListExpression listExpression);
    void visit(ListIndexExpression listIndexExpression);
    void visit(DictExpression dictExpression);
    void visit(ContinueStatement continueStatement);
    void visit(BreakStatement breakStatement);
    void visit(MemberExpression memberExpression);
}
